Skip to content

chore(transport): retire the legacy TCP package - #498

Merged
yordis merged 42 commits into
masterfrom
yordis/chore-remove-legacy-tcp-package
Sep 24, 2026
Merged

yordis merged 42 commits into
masterfrom
yordis/chore-remove-legacy-tcp-package

Conversation

@yordis

@yordis yordis commented Sep 12, 2026 •

Copy link
Copy Markdown
Member
  • Prevents the retired transport from remaining buildable or distributable by accident.

@yordis
yordis requested a review from a team as a code owner September 12, 2026 23:22
@cursor

cursor Bot commented Sep 12, 2026 •

Copy link
Copy Markdown

PR Summary

Medium Risk
Removes a large legacy networking layer; runtime impact is low if nothing still depended on it, but TLS behavior is now validated only on HTTP/gRPC paths.

Overview
Retires EventStore.Transport.Tcp by dropping the project from the solution and deleting its TCP/SSL connection stack, framing, and related tests plus embedded TCP test CAs.

TLS coverage moves to current transports: new Kestrel-based tests exercise mutual TLS for HTTP (NodeHttpClientFactory + ClusterVNode cert validators) and gRPC replication (trusted client cert → certificate identity; missing client cert → Unauthenticated).

Build/CI cleanup: EventStore.Core.Tests no longer references the TCP project or TCP embedded certs; the test image no longer installs a TCP test CA or runs update-ca-certificates. Central package list drops unused EventStore.Client.

Reviewed by Cursor Bugbot for commit 5b77efa. Bugbot is set up for automated code reviews on this repo. Configure here.

@yordis
yordis added this pull request to stack #500 September 12, 2026 23:22
@coderabbitai

coderabbitai Bot commented Sep 12, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 7761045f-e617-431e-8c8f-de8df6d607c1

📥 Commits

Reviewing files that changed from the base of the PR and between 39a8db8 and 5b77efa.

📒 Files selected for processing (4)
  • Dockerfile
  • scripts/test.sh
  • src/EventStore.Core.Tests/Services/Transport/Grpc/Replication/ReplicationMutualTlsTests.cs
  • src/EventStore.Core.Tests/Services/Transport/Http/ssl_connections_mutual_auth.cs
💤 Files with no reviewable changes (1)
  • Dockerfile

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


Walkthrough

The pull request removes the EventStore.Transport.Tcp project and its formatting, framing, connection, listener, SSL, pooling, configuration, monitoring, and statistics code. It also adds mutual TLS tests for HTTP connections and gRPC replication, and removes test-container setup for a CA certificate.

Changes

TCP transport removal

Layer / File(s) Summary
Project and solution removal
src/Directory.Packages.props, src/EventStore.Transport.Tcp/EventStore.Transport.Tcp.csproj, src/EventStore.sln
The TCP project and its solution configuration entries are removed. The central EventStore.Client version entry is also removed.
Formatting and framing removal
src/EventStore.Transport.Tcp/Formatting/*, src/EventStore.Transport.Tcp/Framing/*
Formatter interfaces and implementations, length-prefix framers, and PackageFramingException are removed.
Connection and monitoring removal
src/EventStore.Transport.Tcp/ITcpConnection.cs, src/EventStore.Transport.Tcp/IMonitoredTcpConnection.cs, src/EventStore.Transport.Tcp/Tcp*.cs, src/EventStore.Transport.Tcp/SocketArgsPool.cs, src/EventStore.Transport.Tcp/Helper.cs
TCP and SSL connections, client and server socket handling, pooling, configuration, monitoring, statistics, helper methods, and typed connection wrapping are removed.

Mutual TLS tests

Layer / File(s) Summary
HTTP mutual TLS connection tests
src/EventStore.Core.Tests/Services/Transport/Http/ssl_connections_mutual_auth.cs, Dockerfile, scripts/test.sh
HTTP tests cover certificate trust and validation combinations, including absent client or server certificates. The test container no longer installs the CA certificate or refreshes the system certificate bundle.
Replication mutual TLS tests
src/EventStore.Core.Tests/Services/Transport/Grpc/Replication/ReplicationMutualTlsTests.cs
Tests verify that a trusted client certificate reaches replication as a certificate identity and that a connection without a client certificate receives an Unauthenticated status without publishing messages.

Priority: ⬇️ Low

Estimated code review effort: 3 (Moderate) | ~25 minutes

Change: Other

Merge Risk: ⚪ Minimal · up to 5b77e

This change retires the legacy TCP transport and adds mutual TLS tests for HTTP and gRPC replication. No remaining code or build configuration depends on the removed package or its test certificate. The new tests set up their own trust roots and do not rely on the system certificate store. No merge-blocking risk was found.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 11 functions across 2 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: retirement of the legacy TCP transport package.
Description check ✅ Passed The description relates directly to the changes, which remove the legacy transport project and prevent accidental build or distribution.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

A rabbit checks the socket’s place
Then tests TLS at a careful pace
A trusted cert can state its name
No client cert brings no message claim
The old TCP files rest away
And buns applaud the tests today
One hop, one check, then off to play

Comment @coderabbitai help to get the list of available commands.

@yordis
yordis force-pushed the yordis/chore-remove-legacy-tcp-package branch 2 times, most recently from eb57a53 to aecb79b Compare September 13, 2026 00:33
@yordis
yordis force-pushed the yordis/feat-grpc-connection-observability branch 2 times, most recently from 611f2d1 to e076174 Compare September 13, 2026 00:58
@yordis
yordis force-pushed the yordis/chore-remove-legacy-tcp-package branch from aecb79b to 6c8c952 Compare September 13, 2026 00:58
@yordis
yordis force-pushed the yordis/feat-grpc-connection-observability branch from e076174 to a2e6f28 Compare September 13, 2026 01:16
@yordis
yordis force-pushed the yordis/chore-remove-legacy-tcp-package branch 2 times, most recently from b59fac7 to e2ed620 Compare September 13, 2026 01:31
@yordis
yordis force-pushed the yordis/feat-grpc-connection-observability branch 2 times, most recently from 0388f55 to 4edf1c7 Compare September 13, 2026 01:46
@yordis
yordis force-pushed the yordis/chore-remove-legacy-tcp-package branch from e2ed620 to 75e1a84 Compare September 13, 2026 01:46
@yordis
yordis force-pushed the yordis/feat-grpc-connection-observability branch from 4edf1c7 to ab718f7 Compare September 13, 2026 02:04
@yordis
yordis force-pushed the yordis/chore-remove-legacy-tcp-package branch from 75e1a84 to 2b3ea9b Compare September 13, 2026 02:04
@yordis
yordis force-pushed the yordis/feat-grpc-connection-observability branch from ab718f7 to ea44f29 Compare September 13, 2026 02:29
@yordis
yordis force-pushed the yordis/chore-remove-legacy-tcp-package branch from 2b3ea9b to 55dbee6 Compare September 13, 2026 02:29
@yordis
yordis force-pushed the yordis/feat-grpc-connection-observability branch from ea44f29 to f7af60a Compare September 13, 2026 02:59
@yordis
yordis force-pushed the yordis/chore-remove-legacy-tcp-package branch from 55dbee6 to 1a6764d Compare September 13, 2026 02:59
@yordis
yordis force-pushed the yordis/feat-grpc-connection-observability branch from f7af60a to bcf499c Compare September 13, 2026 03:14
@yordis
yordis force-pushed the yordis/chore-remove-legacy-tcp-package branch 2 times, most recently from bc7052f to bc1674b Compare September 13, 2026 03:46
@yordis
yordis force-pushed the yordis/feat-grpc-connection-observability branch from bcf499c to 5d57e44 Compare September 13, 2026 03:46
@yordis
yordis force-pushed the yordis/chore-remove-legacy-tcp-package branch from bc1674b to a6da954 Compare September 13, 2026 04:23
@yordis
yordis force-pushed the yordis/feat-grpc-connection-observability branch from 5d57e44 to 3840b14 Compare September 13, 2026 04:23
@yordis
yordis force-pushed the yordis/chore-remove-legacy-tcp-package branch from a6da954 to e255edb Compare September 13, 2026 06:04
@yordis
yordis force-pushed the yordis/feat-grpc-connection-observability branch 2 times, most recently from 8d16f1b to 5e57c7d Compare September 13, 2026 18:21
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
…ment chain

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
…data

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit c08032d. Configure here.

Comment thread src/EventStore.Core.Tests/EventStore.Core.Tests.csproj
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
…e failure

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
…ssion

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant